With regard to printer drivers which are capable of running on Windows operating systems, Microsoft corporation (MICROSOFT is a registered trademark of Microsoft Corporation in the United States and other countries, and the same shall apply hereinafter) provides guidelines for hardware manufacturers. According to the guidelines, hardware manufacturers have provided version 3 printer drivers on the assumption the printer drivers work with Windows operating systems from Windows 2000 to Windows 7.
As the succeeding operating systems, there arrived Windows 8 and Windows Server 2012. Especially, since Windows 8 employs a metro-style user interface, which is a new and tile-like user interface, hardware manufacturers are developing version 4 printer drivers which employ a new printer driver architecture for those operating systems.
Such a version 4 printer driver model has a structure roughly divided into two layers of a printer driver core component and a print setup UI (User Interface) component. These two layers are designed so as to separate their processes from each other, which realizes that the two layers can be provided separately.
The printer driver core component is an application which supplies print features. The printer driver core component causes, when being executed, a computing device to create print capability information referred to as PrintCapabilities and print setup information referred to as PrintTicket, on the basis of a data file like a GPD (Generic Printer Description) file including definition of print features, and to handle a conflict between settings associated with the print features.
The print setup UI component is an application being independent from the printer driver core component, and provides a setup user interface on the basis of PrintCapabilities and PrintTicket supplied from the printer driver core component.
For a purpose of executing print processing appropriately, such a printer driver, when being executed, causes a computing device to perform a process of checking an occurrence of a conflict between settings such as setup items and option values (referred to as prohibition processing). An increase of period of prohibition processing time delays a start time of print processing. In view of the problem, Japanese Unexamined Patent Publication (JP-A) No. 2012-226696 discloses a printer driver which causes a computing device to process information about print processing of a printer device. The printer driver includes a converting and storing module and an output module. The converting and storing module converts a structured data in which constraints about printing are described in a structured language into constraint data which is binary data in a multidimensional array, and makes a storage device to store the converted constraint data. The output module determines a constraint by using the constraint data stored and outputs a determined result. The conversion of the structured data into constraint data being binary data is conducted in order to increase the speed of the prohibition processing.
Though it takes relatively short time for the constraint prohibition in a version 3 printer driver, because a language such as C and C++ is used for the processing, the prohibition processing in a version 4 printer driver needs long time, because JavaScript (JAVASCRIPT is a registered trademark of Oracle America, Inc.) is used for the prohibition processing.
Concretely, in processing of a version 4 printer driver, a function referred to as validatePrintTicket( ) defined by JavaScript is invoked in response to receiving instructions of the prohibition processing form an application or an operating system. The function checks whether current option values described in the PrintTicket cause a conflict of option values. As a result of the check, if the option values include an option value causing such a conflict, the function solves the conflict, and returns information indicating whether a process to solve the conflict has been conducted, as a return value, to the application or the operating system. It takes long time for such processing.
The number of times the function validatePrintTicket( ) is invoked depends on the application and the operating system. The function can be invoked plural times for one process of printing, and instructions to perform the prohibition processing can be given several times for one and the same PrintTicket. Therefore, the time period needed for the prohibition processing using the function further increases by about five to ten times in comparison with the case that an equivalent processing is carried out by using a language such as C and C++. This situation newly arises from the feature of a version 4 printer driver. An increase of the prohibition processing delays a start time of print processing, which remarkably impairs the user's convenience.